Intro
Dans ce cours nous allons écrire notre petit moteur de rendu from scratch, en C++ et en utilisant l'API OpenGL.
Le but est que vous découvriez les différents concepts qui sont au cœur d'un moteur de rendu 3D, et que vous compreniez mieux ce qu'il se passe derrière vos outils préférés (Unreal, Unity, Blender, etc.).
Nous allons parler de :
- Mesh
- Vertex Buffer
- Index Buffer
- Vertex Shader
- Fragment Shader
- Variables uniformes
- Caméra
- Matrice de vue
- Matrice de projection
- Matrice modèle
- Depth Buffer
- Textures
- Modèles d'éclairage (Blinn–Phong, PBR)
- Post-processing
- Render Target
- Ombres (Shadow Maps)
À chaque séance je ferai un petit point de cours (30 min max) pour vous expliquer un concept en détail, puis vous serez en autonomie pour avancer sur les TPs. N'hésitez surtout pas à me poser plein de questions, et à m'appeler dès que vous êtes bloqué.es plus de 5-10 minutes sur quelque chose.
Vous serez évalué.es sur ces TPs qu'il faudra me rendre. Il y aura deux notes, une au milieu du trimestre et une à la fin. Il est donc important d'avancer régulièrement, car vous serez évalué.es au milieu du trimestre sur là où vous en êtes.
Il y a quelques sections qui sont marquées Bonus dans les TPs, vous n'êtes pas obligé.es de les faire, mais si vous en avez le temps et l'envie n'hésitez pas, ça sera valorisé dans la notation.
NB : Votre implication et votre participation en classe influencerons aussi (légèrement) votre note.
Vous devriez avoir le temps de faire les TPs avec le temps qu'on a en classe, ne vous sentez pas obligé.es d'avancer à la maison. (Et si les TPs s'avèrent être trop longs pour tout le monde, faites-le moi savoir et j'adapterai mes exigences, pas de panique).
Le rendu de vos TPs se fera via GitHub / GitLab, en me mettant un lien sur ce Google Sheet.
Faites bien des commits à chaque étape des TPs (en gros à chaque screenshot dans le TP) ! J'irai les regarder pour voir les choses qui se font effacer au cours du temps (comme le premier triangle que vous allez dessiner par exemple).
N'hésitez pas à me faire des retours sur tout problème qu'il pourrait y avoir ! Ce qui m'importe c'est que ce cours soit intéressant et enrichissant pour vous, donc je peux le faire évoluer et le changer si il ne vous convient pas !